package com.coolw.test.compare;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;

/**
 * Comparable:
 * 1.当前对象需要实现Comparable接口,重写compareTo(T o)方法
 * 2.当前对象和传进来的对象进行比较,适用于对象排序规则是唯一的场景
 * 3.如果排序规则调整,需要修改原来排序的代码
 *
 * @author coolw
 * @date 2024/6/4 19:43
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person implements Comparable<Person> {

    private String name;

    private int age;

    @Override
    public int compareTo(Person other) {
        // 根据 age 升序
        return this.age - other.getAge();
    }

    public static void main(String[] args) {
        Person[] personArr = {
                new Person("zhangsan", 20),
                new Person("lisi", 25),
                new Person("wangwu", 22)
        };

        // 排序前打印
        Arrays.stream(personArr).forEach(System.out::println);

        System.out.println("-------------------------------------");
        // 排序
        Arrays.sort(personArr);

        // 排序后打印
        Arrays.stream(personArr).forEach(System.out::println);
    }
}
